<?php

if (!defined('BASEPATH'))
    exit('No direct script access allowed');

class Producto_model extends MY_Model {

    function __construct() {
        parent::__construct();
        $this->_table = 'producto';
        $this->primary_key = 'pro_id';
    }

    public function getProducto($datos = null) {
        if (isset($datos['pro_id'])) {
            $this->db->where('pro_id', $datos['pro_id']);
        }
        if ($this->session->userdata('usu_fk_rol') > 2) {
            $this->db->where('pro_fk_usuario', $this->session->userdata('usu_id'));
        }
        $this->db->join('municipio', 'municipio.mun_id = producto.pro_fk_municipio', 'left');
        $this->db->join('prod_subtipo', 'prod_subtipo.pst_id = producto.pro_fk_prod_subtipo');
        $this->db->join('prod_tipo', 'prod_tipo.pti_id = prod_subtipo.pst_fk_prod_tipo');
        if (isset($datos['paginas']) && isset($datos['index'])) {
            $this->db->limit($datos['paginas'], ($datos['index'] * $datos['paginas']));
        }
        $query = $this->db->get('producto');
        $array = array();
        $cont = 0;
        foreach ($query->result_array() as $row) {
            $array[$cont] = $row;
            $array[$cont]['d_razas'] = $this->_get_razas($row['pro_id']);
            $array[$cont]['d_imagenes'] = $this->_get_fotos($row['pro_id']);
            $array[$cont]['d_visitas'] = $this->_get_visitas($row['pro_id']);
            $array[$cont]['d_descripciones'] = $this->_get_descripciones($row['pro_id']);
            $cont++;
        }
        return $array;
    }
    
    public function setProducto($clase = null){
        $idproducto = $this->input->post('pro_id');
        $this->load->library('Fechas');
                
        //insertamos o actualizamos producto
        $producto = array(
            'pro_titulo' => $this->input->post('pro_titulo'),
            'pro_precio' => $this->input->post('pro_precio'),
            'pro_fec_nacimiento' => $this->fechas->fec_str_to_mysql($this->input->post('pro_fec_nacimiento')),
            'pro_mestizo' => $this->input->post('pro_mestizo') != 'S' ? 'N' : 'S',
            'pro_machos' => $this->input->post('pro_machos'),
            'pro_hembras' => $this->input->post('pro_hembras'),
            'pro_fk_usuario' => $this->session->userdata('usu_id'),
            'pro_usucre' => $this->session->userdata('usu_id'),
            'pro_feccre' => date('Y-m-d H:i:s'),
            'pro_slug' => $this->general->_set_slug_producto(slug($this->input->post('pro_titulo')))
        );
        if($idproducto != ''){
            $this->db->where('pro_id', $idproducto);
            $this->db->update('producto', $producto);
        }else{
            if($clase == null){
                $this->session->set_flashdata('error', ulang('error_falta_clase'));
                return null;
            }
            $producto['pro_fk_prod_subtipo'] = $clase;
            $this->db->insert('producto', $producto);
            $idproducto = $this->db->insert_id();
        }
        
        //insertamos o actualizamos las descripciones
        $descripciones = array();
        $idiomas = $this->db->get('base_idioma');
        foreach($idiomas->result_array() as $idioma){
            $descripciones[] = array(
                'prd_desc' => $this->input->post('prd_desc'."_".$idioma['idi_abrev']),
                'prd_fk_producto' => $idproducto,
                'prd_fk_base_idioma' => $idioma['idi_id']
            );
        }
        $this->db->delete('prod_descripcion', array('prd_fk_producto' => $idproducto));
        $this->db->insert_batch('prod_descripcion', $descripciones);
        
        //insertamos o actualizamos las razas
        $razas = array();
        foreach($_POST['ppz_fk_prod_raza'] as $raza){
            $razas[] = array(
                'ppz_fk_producto' => $idproducto,
                'ppz_fk_prod_raza' => $raza
            );
        }
        $this->db->delete('pro_prod_raza', array('ppz_fk_producto' => $idproducto));
        $this->db->insert_batch('pro_prod_raza', $razas);
        return $idproducto;
    }
    
    public function setClase($idproducto, $idclase){
        $this->db->where('pro_id', $idproducto);
        $this->db->update('producto', array('pro_fk_prod_subtipo' => $idclase));
    }
    
    public function setFotos($info_imagenes, $idproducto){
        $data = array(
            'prf_url' => $info_imagenes['url'], 
            'prf_thumb' => $info_imagenes['url_thumb'], 
            'prf_fk_producto' => $idproducto,
            'prf_fk_usuario' => $this->session->userdata('usu_id'),
            'prf_feccre' => date('Y-m-d H:i:s'), 
            'prf_usucre' => $this->session->userdata('usu_id'));
        $this->db->insert('prod_foto', $data);
        return $this->db->_error_message();
    }
    
    public function getSubtipos($datos = null){
        if (isset($datos['pst_fk_prod_tipo'])) {
            $this->db->where('pst_fk_prod_tipo', $datos['pst_fk_prod_tipo']);
        }
        $query = $this->db->get('prod_subtipo');
        return $query->result_array();
    }
    
    public function is_producto_propio($idproducto = null){
        if($idproducto == null){
            return true;
        }
        $this->db->where('pro_id', $idproducto);
        $this->db->where('pro_fk_usuario', $this->session->userdata('usu_id'));
        $query = $this->db->get('producto');
        return $query->num_rows() > 0 ? true : false;
    }
    
    public function getRazas($datos = null){
        if (isset($datos['prz_fk_prod_subtipo'])) {
            $this->db->where('prz_fk_prod_subtipo', $datos['prz_fk_prod_subtipo']);
        }
        $query = $this->db->get('prod_raza');
        return $query->result_array();
    }
    /*public function borrar_imagen($idempresa, $idimagen){
        $this->db->delete('empresa_imagen', array('emi_fk_empresa' => $idempresa, 'emi_id' => $idimagen));
    }

    public function getEmpresasUsuario($datos = null) {
        $this->db->where('emp_fk_usuario', $datos['usu_id']);
        return $this->db->get('empresa')->result_array();
    }

    public function setEmpresa($datos_empresa = null, $datos_categoria = null, $datos_imagenes = null, $idempresa = null) {
        if($idempresa == null){
            $this->db->insert('empresa', $datos_empresa); 
        }else{
            if($datos_empresa != null){
                //actualizamos empresa
                $this->db->where('emp_id', $idempresa);
                $this->db->update('empresa', $datos_empresa);
                //si no se ha visto afectada ninguna row es que han intentado hacer trampas
                if($this->db->affected_rows() == 0){
                    return null;
                }
            }
            
            if($datos_categoria != null){
                //actualizamos categorias de empresa.
                $this->db->delete('emp_cat_empresa', array('ece_fk_empresa' => $idempresa));
                $this->db->insert_batch('emp_cat_empresa', $datos_categoria);
            }
            
            if($datos_imagenes != null){
                //actualizamos imagenes de empresa.
                $this->db->insert('empresa_imagen', $datos_imagenes);
            }
        }
        return $idempresa != null ? $idempresa : $this->db->insert_id();
    }
    
    public function borrar_empresa($idempresa){
        $this->db->delete('empresa', array('emp_id' => $idempresa, 'emp_fk_usuario' => $this->session->userdata('usu_id')));
        $this->db->delete('empresa_imagen', array('emi_fk_empresa' => $idempresa));
        $this->db->delete('emp_cat_empresa', array('ece_fk_empresa' => $idempresa));
        return $this->db->_error_message();
    }
    
    public function is_empresa_propia($idempresa = null){
        if($idempresa == null){
            return true;
        }
        $this->db->where('emp_id', $idempresa);
        $this->db->where('emp_fk_usuario', $this->session->userdata('usu_id'));
        $query = $this->db->get('empresa');
        return $query->num_rows() > 0 ? true : false;
    }
    
    public function get_empresas_similares($datos){
        $arrayempresas = array();
        
        $query = $this->db->get('empresa');
        
        foreach($query->result_array() as $empresa){
            $lev = levenshtein(slug($datos['emp_nombre']), $empresa['emp_slug']);
            if ($lev == 0) {
                // salir del bucle, se ha encontrado una coincidencia exacta
                $arrayempresas[] = $empresa;
                break;
            }
            if ($lev < 4) {
                $arrayempresas[] = $empresa;
            }
        }
        return $arrayempresas;
    }

    public function getCategorias($idparent = null) {
        if ($idparent != null) {
            $this->db->where('emc_parent', $idparent);
        }
        return $this->db->get('emp_categoria')->result_array();
    }*/

    //*****private methods

    private function _get_razas($idproducto) {
        $this->db->where('ppz_fk_producto', $idproducto);
        $this->db->join('prod_raza', 'prod_raza.prz_id = pro_prod_raza.ppz_fk_prod_raza');
        return $this->db->get('pro_prod_raza')->result_array();
    }
    
    private function _get_fotos($idproducto){
        $this->db->where('prf_fk_producto', $idproducto);
        return $this->db->get('prod_foto')->result_array();
    }
    
    private function _get_visitas($idproducto){
        $this->db->where('vis_fk_producto', $idproducto);
        $this->db->where('vis_mes', date('m'));
        $this->db->where('vis_ano', date('Y'));
        return $this->db->get('prod_visitas')->result_array();
    }
    
    private function _get_descripciones($idproducto){
        $this->db->where('prd_fk_producto', $idproducto);
        $this->db->join('base_idioma', 'prod_descripcion.prd_fk_base_idioma = base_idioma.idi_id');
        return $this->db->get('prod_descripcion')->result_array();
    }

}

/* End of file MY_Model.php */
/* Location: ./core/MY_Model.php */